package com.itheima.easy.service;

import com.itheima.easy.base.AjaxResult;
import com.itheima.easy.dto.CheckInDto;
import com.itheima.easy.vo.CheckInVo;

import java.time.LocalDateTime;

/**
 * @author sjqn
 * @date 2023/6/19
 */
public interface CheckInService {
    /**
     * 入住申请
     * @param checkInDto
     */
    AjaxResult createCheckIn(CheckInDto checkInDto);

    /**
     * 查询入住信息
     * @param      * @param status
     * @param id
     * @return
     */
    AjaxResult<CheckInVo> getCheckIn(Long id, String assigneeId, Integer flowStatus);

    /**
     * 同意入住申请
     * @param checkInDto
     * @return
     */
    AjaxResult submitCheckIn(CheckInDto checkInDto);

    /**
     * 审核拒绝
     * @param id  入住单code
     * @param reject   拒绝原因
     * @return
     */
    AjaxResult auditReject(Long id, String reject);

    /**
     * 撤回
     * @param id
     * @param flowStatus
     * @return
     */
    AjaxResult revocation(Long id, Integer flowStatus);

    /**
     * 撤销驳回
     * @param id
     * @return
     */
    AjaxResult disapprove(Long id, String message);

    /**
     * 入住管理列表查询
     * @param checkInCode    入住code
     * @param name           老人姓名
     * @param idCardNo       身份证号
     * @param start          开始时间
     * @param end            结束时间
     * @param pageNum        当前页
     * @param pageSize       每页显示条数
     * @param deptNo         部门编号
     * @param userId         用户id
     * @return
     */
    AjaxResult selectByPage(String checkInCode, String name, String idCardNo, LocalDateTime start, LocalDateTime end, Integer pageNum, Integer pageSize, String deptNo, Long userId);

    /**
     * 撤销
     * @param checkInCode   入住编码
     * @return
     */
    AjaxResult cancel(Long checkInCode);

    /**
     * 评估
     * @param checkInDto
     * @return
     */
    AjaxResult review(CheckInDto checkInDto);
}
